#ifndef __CEntity_H__
#define __CEntity_H__

#include "compfwk/IEntity.h"

namespace compfwk
{
    /**
     * Implementation of an entity
     *
     * This class is not intended to be reused at this moment
     * It has all the funcionality it needs at this moment
     */
    class CEntity : public IEntity
    {
    public:
        //! Default constructor.Assigns an id to the entity
        CEntity( const int a_eid, 
                 const CString& ar_type, 
                 const CString& ar_desc );

        //! Destructor
        ~CEntity( );

        //! Returns the id that identifies in a unique way
        //! each entity
        virtual int GetEntityId( void );

        //! Returns a string with the description of the entity
        virtual const CString& GetDescription( void );

        //! Returns a string with the type of the entity
        //! The type is defined by the role of 
        //! the entity in the system
        virtual const CString& GetType( void );

    protected:
        //! Entity identifier
        int m_eid;

        //! Entity type name
        CString m_type;

        //! Entity description
        CString m_description;

    private:
        //! Copy constructor
        CEntity( const CEntity& ar_ent );

        //! Assignment operator
        CEntity& operator =( const CEntity& ar_ent );
    };
}
#endif